-
-
Notifications
You must be signed in to change notification settings - Fork 7.3k
[python-nextgen] Add type to actual instance #16204
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[python-nextgen] Add type to actual instance #16204
Conversation
Signed-off-by: ふぁ <[email protected]>
Signed-off-by: ふぁ <[email protected]>
Signed-off-by: ふぁ <[email protected]>
Signed-off-by: ふぁ <[email protected]>
|
Thanks for the enhancement. Looks good to me. |
| if TYPE_CHECKING: | ||
| actual_instance: Union[{{#anyOf}}{{{.}}}{{^-last}}, {{/-last}}{{/anyOf}}] | ||
| else: | ||
| actual_instance: Any |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@fa0311 thank again for the PR. Just a second thought, shall we simply use the following without TYPE_CHECKING:
actual_instance: Union[{{#anyOf}}{{{.}}}{{^-last}}, {{/-last}}{{/anyOf}}]
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If TYPE_CHECKING is not used, an incorrect type conversion will be performed by pydantic.
openapi: 3.0.3
info:
title: Swagger Petstore
version: 1.0.0
paths:
/foo:
get:
responses:
default:
description: response
content:
application/json:
schema:
$ref: "#/components/schemas/Animal"
components:
schemas:
Animal:
oneOf:
- $ref: "#/components/schemas/Cat"
- $ref: "#/components/schemas/Dog"
discriminator:
propertyName: type
mapping":
Cat: "#/components/schemas/Cat"
Dog: "#/components/schemas/Dog"
Cat:
properties:
type:
type: string
color:
type: string
Dog:
properties:
type:
type: string
bark:
type: stringinputSpec: test.yaml
outputDir: .
packageName: petstore
projectName: petstore
useOneOfDiscriminatorLookup: truefrom petstore import Animal
res = Animal.from_dict({"type": "Dog", "bark": "loud"})
print(type(res.actual_instance)) # <class 'petstore.models.cat.Cat'>In this example, the type is Dog, but the actual_instance is <class 'petstore.models.cat.Cat'>.
Assumed type of actual_instance is <class 'petstore.models.dog.Dog'>
If there is another, even better way to work around this, we will fix it.
PR checklist
This is important, as CI jobs will verify all generator outputs of your HEAD commit as it would merge with master.
These must match the expectations made by your contribution.
You may regenerate an individual generator by passing the relevant config(s) as an argument to the script, for example
./bin/generate-samples.sh bin/configs/java*.For Windows users, please run the script in Git BASH.
master(6.3.0) (minor release - breaking changes with fallbacks),7.0.x(breaking changes without fallbacks)Overview
This is a small update.
Add type hints.